#include "BlockingQueue.hpp"
#include <iostream>
#include <unistd.h>
using namespace std;
void* consume(void*args)
{
    //消费
    Blockqueue<int>* bq=static_cast<Blockqueue<int>*>(args);//获取传入参数(获取共享资源)
    while(true)
    {
    int a=bq->pop();
    cout<<"消费了一个数据："<<a<<endl;
    sleep(2);

    }
    //分离线程不用等待

    pthread_detach(pthread_self());

    return nullptr;
}
void* production(void* args)
{
    int a=0;

    //生产
    Blockqueue<int>* bq=static_cast<Blockqueue<int>*>(args);//获取传入参数(获取共享资源)
    while(true)
    {
    bq->push(a);
    cout<<"生产了一个数据： "<< a<<endl;
    a++;
    //sleep(1);
    }
    pthread_detach(pthread_self());

    return nullptr;
}
int main()
{
    Blockqueue<int>* bq=new Blockqueue<int>(20);//线程访问的共享空间
    //创建两个线程
    pthread_t c,p;//创建两种角色：生产者、消费者
    pthread_create(&c,nullptr,consume,bq);
    pthread_create(&p,nullptr,production,bq);
   while(1);
    delete bq;
    return 0;
}